#ifndef CONVERTITERADOR_CPP
#define CONVERTITERADOR_CPP

#include "ConvertIterador.h"
#include "Conversor.h"

template <class T, class U, typename Conv>
ConvertIterador<T,U,Conv>::ConvertIterador(Puntero<Iterador<T>> toConvert)
{
	assert(toConvert != NULL);
	m_ToConvert = toConvert;
}

template <class T, class U, typename Conv>
ConvertIterador<T,U,Conv>::~ConvertIterador()
{
}

template <class T, class U, typename Conv>
void ConvertIterador<T,U,Conv>::Reiniciar()
{
	m_ToConvert->Reiniciar();
}

template <class T, class U, typename Conv>
bool ConvertIterador<T,U,Conv>::HayElemento() const
{
	return m_ToConvert->HayElemento();
}

template <class T, class U, typename Conv>
const U& ConvertIterador<T,U,Conv>::ElementoActual() const
{
	Conversor<T,U>& conv = Conv();
	m_Actual = conv(m_ToConvert->ElementoActual());
	return m_Actual;
}

template <class T, class U, typename Conv>
void ConvertIterador<T,U,Conv>::Avanzar()
{
	m_ToConvert->Avanzar();
}

#endif